iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 8
0
自我挑戰組

30 天的 ShellScript 教室解決開發者的困擾系列 第 8

[鐵人賽第08天] Command Substitution 的用法

  • 分享至 

  • xImage
  •  

真是的都開始打戰某世界才想到今天的文還沒寫。

昨天有提到可以把 stdout 的結果導向檔案存起來,前面也提到我們可以產生變數儲存資料,那有沒有辦法把指令執行的結果,存進變數呢?

當然有,這時候可以用 Command Substitution (這玩意兒的中文翻譯好亂,有人叫他 小指令 、有人叫他 子指令 ,但是不管哪個中文都很怪)。

用法如下:

MYVAR=$(cat myMessage.txt)

輸入這個指令後, Shell 會把 $(cat myMessage.txt) 裡面的指令先執行起來,把 stdout 的資料記錄下來,帶入後再執行 MYVAR=HELLO_WORLD

所以當然,如果不想存進變數直接用,也可以直接 echo $(cat myMessage.txt)

什麼你說要打 $() 太多字,好吧,那下面的用法簡潔一點了吧:

MYVAR=`cat myMessage.txt`

另外注意,因為 Bash 的設計關係,在 Bash 的變數內容不允許有換行; Zsh 的變數內容則是允許有換行,之後講迴圈,這個差異就非常麻煩惹。

至於你說這對開發程式有什麼用處嗎?有啊, curl 帶 User-Agent 或是 JWT 的時候,這樣不就方便多了嗎!

好今天就這樣,我要巡洋艦妙高跟巡洋艦高雄!!


我是誰?
我是 dd-han ,可以叫我呆翰,是國立臺中科技大學的延畢生 與 創科資訊的時習生。


上一篇
[鐵人賽第07天] 介紹 stdout / stderr
下一篇
[鐵人賽第09天] 介紹管線與 grep 指令
系列文
30 天的 ShellScript 教室解決開發者的困擾23
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言